//
//  NSDate+Extension.swift
//  测试-02-日期
//
//  Created by 刘凡 on 15/10/31.
//  Copyright © 2015年 joyios. All rights reserved.
//

import Foundation

extension NSDate {
    
    /// 把新浪微博日期格式的字符串转换成日期
    class func sinaDate(str: String) -> NSDate? {
        let df = NSDateFormatter()
        df.locale = NSLocale(localeIdentifier: "en")
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        return df.dateFromString(str)
    }
    
    /// 日期描述字符串
    ///
    /// 格式如下
    ///     -   刚刚(一分钟内)
    ///     -   X分钟前(一小时内)
    ///     -   X小时前(当天)
    ///     -   昨天 HH:mm(昨天)
    ///     -   MM-dd HH:mm(一年内)
    ///     -   yyyy-MM-dd HH:mm(更早期)
    var dateDescription: String {
        
        let canlendar = NSCalendar.currentCalendar()
        
        // 今天
        if canlendar.isDateInToday(self) {
            let delta = Int(NSDate().timeIntervalSinceDate(self))

            if delta < 60 {
                return "刚刚"
            }
            if delta < 3600 {
                return "\(delta / 60) 分钟前"
            }
            return "\(delta / 3600) 小时前"
        }
        
        // 其他日期
        var fmt = " HH:mm"
        if canlendar.isDateInYesterday(self) {
            fmt = "昨天" + fmt
        } else {
            fmt = "MM-dd" + fmt
            
            let coms = canlendar.components(.Year, fromDate: self, toDate: NSDate(), options: [])
            if coms.year > 0 {
                fmt = "yyyy-" + fmt
            }
        }
        
        let df = NSDateFormatter()
        df.locale = NSLocale(localeIdentifier: "en")
        df.dateFormat = fmt
        
        return df.stringFromDate(self)
    }
    
}